#Findall函数
#用于在字符串中搜索所有不重叠的匹配
#返回
#如未设置捕获组，则返回符合正则规则的字符串列表
#如已设置捕获组，且捕获组仅有一个，则依然返回符合正则规则的字符串列表
#如已设置捕获组，且捕获组多于一个，则返回符合正则规则的元组列表

import re
print(help(re.findall))
#用pprint无实质区别，仅看起来清晰一点而已
from pprint import pprint

mac_table=open(r'c:\tools\mac_table.txt').read()
#可以打印出来看读取情况
print(mac_table)

#4c1f-ccd0-2d35 1           -      -      Eth0/0/5        dynamic   0/- 
#\S+ +\d+ \S+ +\S+ +Eth\S+ +\S+ +\S+
result=re.findall(r'\S+ +\d+ +\S+ +\S+ +Eth\S+ +\S+ +\S+',mac_table)
print('hello,world!')
pprint(result)
#此处，未使用捕获组，Findall函数返回的是一个字符串列表，而非Match对象
#调整正则表达式（一个捕获组）
#先用一个小括号，把mac地址提取出来
result=re.findall(r'(\S+) +\d+ +\S+ +\S+ +Eth\S+ +\S+ +\S+',mac_table)
pprint(result)

#调整正则表达式（多个捕获组）
result=re.findall(r'(\S+) +(\d+) +\S+ +\S+ +(Eth\S+) +\S+ +\S+',mac_table)
pprint(result)
#返回的不再是字符列表了，而是把捕获组们精心打包成一个个元组，再放在一个大列表中一并返回

